#include "head.hpp"
int do_worker(int net_fd)
{
    char *file_name = "1a.txt";
    int file_name_len = strlen(file_name);
    send(net_fd, &file_name_len, sizeof(int), 0);
    send(net_fd, file_name, file_name_len, 0);
    // v1 客户端v1 服务端v1
    //  int file_fd = open(file_name, O_RDONLY);
    //  struct stat st;
    //  fstat(file_fd, &st);
    //  send(net_fd, &st.st_size, sizeof(off_t), MSG_NOSIGNAL);
    //   // 自己写检测
    //   while (true)
    //   {
    //       char buffer[1000] = {0};
    //       int ret = read(file_fd, buffer, sizeof(buffer));
    //       if (ret == 0)
    //       {
    //           break;
    //       }
    //       ret = send(net_fd, &ret, sizeof(int), MSG_NOSIGNAL);
    //       if (ret == -1)
    //       {
    //           break;
    //       }
    //       ret = send(net_fd, buffer, sizeof(buffer), MSG_NOSIGNAL);
    //       if (ret == -1)
    //       {
    //           break;
    //       }
    //   }
    //  v2 客户端v2 服务端v2
    // int file_fd = open(file_name, O_RDWR);
    // struct stat st;
    // fstat(file_fd, &st);
    // send(net_fd, &st.st_size, sizeof(off_t), MSG_NOSIGNAL);
    // void *p = mmap(nullptr, st.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, file_fd, 0);
    // send(net_fd, p, st.st_size, MSG_NOSIGNAL);
    // munmap(p, st.st_size);
    // v3 客户端v2 服务端v3
    int file_fd = open(file_name, O_RDWR);
    struct stat st;
    fstat(file_fd, &st);
    send(net_fd, &st.st_size, sizeof(off_t), MSG_NOSIGNAL);
    sendfile(net_fd, file_fd, 0, st.st_size);
    close(file_fd);
    return 0;
}